Partager via


Classe T> System.Collections.Generic.HashSet<

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

La HashSet<T> classe fournit des opérations de jeu de performances élevées. Un jeu est une collection qui ne contient aucun élément en double et dont les éléments ne sont pas dans un ordre particulier.

La capacité d’un HashSet<T> objet est le nombre d’éléments que l’objet peut contenir. La capacité d’un HashSet<T> objet augmente automatiquement à mesure que les éléments sont ajoutés à l’objet.

La HashSet<T> classe est basée sur le modèle des jeux mathématiques et fournit des opérations de jeu hautes performances similaires à l’accès aux clés des Dictionary<TKey,TValue> collections ou Hashtable aux collections. En termes simples, la HashSet<T> classe peut être considérée comme une Dictionary<TKey,TValue> collection sans valeurs.

Une HashSet<T> collection n’est pas triée et ne peut pas contenir d’éléments en double. Si la duplication d’ordre ou d’élément est plus importante que les performances de votre application, envisagez d’utiliser la List<T> classe avec la Sort méthode.

HashSet<T> fournit de nombreuses opérations de jeu mathématiques, telles que l’ajout de jeu (unions) et la soustraction de jeu. Le tableau suivant répertorie les opérations fournies HashSet<T> et leurs équivalents mathématiques.

Opération HashSet Équivalent mathématique
UnionWith Union ou ajout de jeu
IntersectWith Intersection
ExceptWith Définir la soustraction
SymmetricExceptWith Différence symétrique

Outre les opérations de jeu répertoriées, la HashSet<T> classe fournit également des méthodes pour déterminer l’égalité des jeux, le chevauchement des jeux et si un ensemble est un sous-ensemble ou un super-ensemble d’un autre ensemble.

.NET Framework uniquement : pour les objets très volumineux HashSet<T> , vous pouvez augmenter la capacité maximale à 2 milliards d’éléments sur un système 64 bits en définissant l’attribut enabled de l’élément <gcAllowVeryLargeObjects>true de configuration sur l’environnement d’exécution.

La classe HashSet<T> implémente l’interface ISet<T>.

Opérations de hashSet et de jeu LINQ

LINQ fournit l’accès aux Distinctopérations , , UnionIntersectet Except définit des opérations sur n’importe quelle source de données qui implémente le ou IQueryable les IEnumerable interfaces. HashSet<T> fournit une collection plus grande et plus robuste d’opérations de jeu. Par exemple, HashSet<T> fournit des comparaisons telles que IsSubsetOf et IsSupersetOf.

La principale différence entre les opérations de jeu LINQ et HashSet<T> les opérations est que les opérations de jeu LINQ retournent toujours une nouvelle IEnumerable<T> collection, tandis que les HashSet<T> méthodes équivalentes modifient la collection actuelle.

En règle générale, si vous devez créer un jeu ou si votre application a besoin d’accéder uniquement aux opérations de jeu fournies, l’utilisation des opérations de jeu LINQ sur une IEnumerable<T> collection ou un tableau suffit. Toutefois, si votre application nécessite l’accès à des opérations de jeu supplémentaires, ou s’il n’est pas souhaitable ou nécessaire de créer une collection, utilisez la HashSet<T> classe.

Le tableau suivant présente les HashSet<T> opérations et leurs opérations de jeu LINQ équivalentes.

Opération HashSet ÉQUIVALENT LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Non fourni. Distinct
SymmetricExceptWith Non fourni.
Overlaps Non fourni.
IsSubsetOf Non fourni.
IsProperSubsetOf Non fourni.
IsSupersetOf Non fourni.
IsProperSupersetOf Non fourni.
SetEquals Non fourni.